<?php

namespace app\common\controller;

class Service
{
    /**
     * 发送 CURL 请求
     * @param string $url 请求的 URL
     * @param array $params 请求参数
     * @param string $method 请求方法，支持 GET 和 POST
     * @param array $headers 请求头信息
     * @return string|false 请求结果，失败返回 false
     */
    public static function sendRequest($url, $params = [], $method = 'GET', $headers = [])
    {
        // 初始化 CURL
        $ch = curl_init();

        // 根据请求方法处理 URL 和参数
        if ($method === 'GET' && !empty($params)) {
            $url = $url . (strpos($url, '?') === false ? '?' : '&') . http_build_query($params);
        }

        // 设置 CURL 选项
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过 SSL 验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        // 设置请求头
        if (!empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        // 处理 POST 请求
        if ($method === 'POST') {
            curl_setopt($ch, CURLOPT_POST, true);
            if (isset($headers['Content-Type']) && strpos($headers['Content-Type'], 'application/json') !== false) {
                // 如果是 JSON 格式的请求体
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
            } else {
                // 普通表单格式的请求体
                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
            }
        }

        // 执行 CURL 请求
        $response = curl_exec($ch);

        // 检查请求是否出错
        if ($response === false) {
            $error = curl_error($ch);
            // 可以根据需求记录错误日志
            // \think\facade\Log::error('CURL 请求出错: ' . $error);
        }

        // 关闭 CURL 会话
        curl_close($ch);

        return $response;
    }

    public function _jsondate($code, $data): array
    {
        if ($code == 'FAIL') {
            return ['result_code' => $code, 'result_message' => $data];
        } else {
            return ['result_code' => $code, 'data' => $data];
        }
    }
    public function process_2d_array($arr) {
        $result = [];
        foreach ($arr as $subArr) {
            if ($subArr['amount'] > 0){
                unset($subArr['commission']);
                unset($subArr['platform_name']);
                unset($subArr['group_name']);
                $key = $subArr['type'] . '_' . $subArr['account'];
                if (isset($result[$key])) {
                    $result[$key]['amount'] += $subArr['amount'];
                } else {
                    $result[$key] = $subArr;
                }
            }
        }
        return array_values($result);
    }

}